bitkeeper revision 1.1159.1.461 (41a77450yxWIiu0zeUzMkkwwljW0mw)
authorcl349@arcadians.cl.cam.ac.uk <cl349@arcadians.cl.cam.ac.uk>
Fri, 26 Nov 2004 18:22:08 +0000 (18:22 +0000)
committercl349@arcadians.cl.cam.ac.uk <cl349@arcadians.cl.cam.ac.uk>
Fri, 26 Nov 2004 18:22:08 +0000 (18:22 +0000)
Increase number of IRQs to 512.

.rootkeys
linux-2.6.9-xen-sparse/include/asm-xen/asm-i386/hardirq.h [new file with mode: 0644]
linux-2.6.9-xen-sparse/include/asm-xen/asm-i386/mach-xen/irq_vectors.h

index d9443a821e47d197cffe4367dc265f3a3c2e0298..09f4f02ccd51891705bbe66df28be03441f8ae11 100644 (file)
--- a/.rootkeys
+++ b/.rootkeys
 4107adf1E5O4ztGHNGMzCCNhcvqNow linux-2.6.9-xen-sparse/include/asm-xen/asm-i386/dma-mapping.h
 40f5623akIoBsQ3KxSB2kufkbgONXQ linux-2.6.9-xen-sparse/include/asm-xen/asm-i386/fixmap.h
 41979925z1MsKU1SfuuheM1IFDQ_bA linux-2.6.9-xen-sparse/include/asm-xen/asm-i386/floppy.h
+41a64cdeQ5SWVEVbSZ0K-IeHHhIJ_w linux-2.6.9-xen-sparse/include/asm-xen/asm-i386/hardirq.h
 4118b6a418gnL6AZsTdglC92YGqYTg linux-2.6.9-xen-sparse/include/asm-xen/asm-i386/highmem.h
 40f5623aJVXQwpJMOLE99XgvGsfQ8Q linux-2.6.9-xen-sparse/include/asm-xen/asm-i386/io.h
 40f5623aKXkBBxgpLx2NcvkncQ1Yyw linux-2.6.9-xen-sparse/include/asm-xen/asm-i386/mach-xen/irq_vectors.h
diff --git a/linux-2.6.9-xen-sparse/include/asm-xen/asm-i386/hardirq.h b/linux-2.6.9-xen-sparse/include/asm-xen/asm-i386/hardirq.h
new file mode 100644 (file)
index 0000000..b5c5362
--- /dev/null
@@ -0,0 +1,61 @@
+#ifndef __ASM_HARDIRQ_H
+#define __ASM_HARDIRQ_H
+
+#include <linux/config.h>
+#include <linux/threads.h>
+#include <linux/irq.h>
+
+typedef struct {
+       unsigned int __softirq_pending;
+       unsigned long idle_timestamp;
+       unsigned int __nmi_count;       /* arch dependent */
+       unsigned int apic_timer_irqs;   /* arch dependent */
+} ____cacheline_aligned irq_cpustat_t;
+
+#include <linux/irq_cpustat.h> /* Standard mappings for irq_cpustat_t above */
+
+/*
+ * We put the hardirq and softirq counter into the preemption
+ * counter. The bitmask has the following meaning:
+ *
+ * - bits 0-7 are the preemption count (max preemption depth: 256)
+ * - bits 8-15 are the softirq count (max # of softirqs: 256)
+ * - bits 16-24 are the hardirq count (max # of hardirqs: 512)
+ *
+ * - ( bit 26 is the PREEMPT_ACTIVE flag. )
+ *
+ * PREEMPT_MASK: 0x000000ff
+ * SOFTIRQ_MASK: 0x0000ff00
+ * HARDIRQ_MASK: 0x01ff0000
+ */
+
+#define PREEMPT_BITS   8
+#define SOFTIRQ_BITS   8
+#define HARDIRQ_BITS   9
+
+#define PREEMPT_SHIFT  0
+#define SOFTIRQ_SHIFT  (PREEMPT_SHIFT + PREEMPT_BITS)
+#define HARDIRQ_SHIFT  (SOFTIRQ_SHIFT + SOFTIRQ_BITS)
+
+/*
+ * The hardirq mask has to be large enough to have
+ * space for potentially all IRQ sources in the system
+ * nesting on a single CPU:
+ */
+#if (1 << HARDIRQ_BITS) < NR_IRQS
+# error HARDIRQ_BITS is too low!
+#endif
+
+#define nmi_enter()            (irq_enter())
+#define nmi_exit()             (preempt_count() -= HARDIRQ_OFFSET)
+
+#define irq_enter()            (preempt_count() += HARDIRQ_OFFSET)
+#define irq_exit()                                                     \
+do {                                                                   \
+               preempt_count() -= IRQ_EXIT_OFFSET;                     \
+               if (!in_interrupt() && softirq_pending(smp_processor_id())) \
+                       do_softirq();                                   \
+               preempt_enable_no_resched();                            \
+} while (0)
+
+#endif /* __ASM_HARDIRQ_H */
index 75647adc8f88cc04de1b0669cfc0fdc79cb7a7a0..6c28dc2ef590b3e0d3ca24c98fe4bf0e2d046d28 100644 (file)
  */
 
 #define PIRQ_BASE   0
-#define NR_PIRQS  128
+#define NR_PIRQS  256
 
 #define DYNIRQ_BASE (PIRQ_BASE + NR_PIRQS)
-#define NR_DYNIRQS  128
+#define NR_DYNIRQS  256
 
 #define NR_IRQS   (NR_PIRQS + NR_DYNIRQS)
 #define NR_IRQ_VECTORS NR_IRQS